/**
 * @file lv_conf.h
 * Configuration file for v8.3.9
 */


 /* lvgl开关 */
#if 1 /*设置为1时启用*/

#ifndef LV_CONF_H
#define LV_CONF_H

#include <stdint.h>

/*====================
        颜色设置
 *====================*/

 /*颜色深度:1(每颜色深度:1(每像素1个字节)),8(RGB332),16(RGB565),32(ARGB8888)。*/
#define LV_COLOR_DEPTH 16

/*交换RGB565颜色的2个字节。如果显示器具有8位接口(例如SPI),则非常有用。*/
#define LV_COLOR_16_SWAP 0

/*启用在透明背景上绘制的功能。
 *如果使用了opa和transform_*样式属性,则需要启用在透明背景上绘制的功能。
 *如果界面在另一层上方,例如OSD菜单或视频播放器,则也可以使用此功能。*/
#define LV_COLOR_SCREEN_TRANSP 0

 /* 调整颜色混合函数的舍入方式。由于GPU可能以不同的方式计算颜色混合,因此需要进行调整。
  * 0:向下舍入,64:从x.75向上舍入,128:从一半向上舍入,192:从x.25向上舍入,254:向上舍入。*/
#define LV_COLOR_MIX_ROUND_OFS 0

  /*如果像素的颜色与色度键值相同,则不会绘制该像素。*/
#define LV_COLOR_CHROMA_KEY lv_color_hex(0x00ff00)         /*纯绿色*/

/*=========================
        内存设置
 *=========================*/

 /*选项1:使用自定义的malloc/free函数。选项0:使用内置的`lv_mem_alloc()`和`lv_mem_free()`函数。*/
#define LV_MEM_CUSTOM 0
#if LV_MEM_CUSTOM == 0
    /*`lv_mem_alloc()`可以使用的内存大小(以字节为单位)(>=2KB)。*/
    /*会在sram中 定义一个 LV_MEM_SIZE 这么大的静态数组 的空间 给下面使用  */
#define LV_MEM_SIZE (20U * 1024U)          /*[bytes]*/

/*将内存池的地址设置为一个地址,而不是像普通数组一样分配它。也可以在外部SRAM中设置。*/
#define LV_MEM_ADR 0     /*0: 未使用*/
/*LVGL不是直接给出一个地址,而是提供一个用于获取内存池的内存分配器,例如:my_malloc。*/
#if LV_MEM_ADR == 0
#undef LV_MEM_POOL_INCLUDE
#undef LV_MEM_POOL_ALLOC
#endif

#else       /*自定义内存管理: 开启后会从堆上分配空间*/
#define LV_MEM_CUSTOM_INCLUDE <stdlib.h>   /*动态内存函数的头文件*/
#define LV_MEM_CUSTOM_ALLOC   malloc
#define LV_MEM_CUSTOM_FREE    free
#define LV_MEM_CUSTOM_REALLOC realloc
#endif     /*LV_MEM_CUSTOM*/

/*中间内存缓冲区的数量,用于渲染和其他内部处理机制。
如果缓冲区不足,您将看到错误日志消息。 */
#define LV_MEM_BUF_MAX_NUM 16

/*使用标准的`memcpy`和`memset`函数代替LVGL自己的函数。(可能会更快,也可能不会更快)。*/
#define LV_MEMCPY_MEMSET_STD 0

/*====================
   硬件抽象层设置
 *====================*/

 /*默认显示刷新周期。LVGL将以此周期重新绘制变化的区域。不是设置多少就刷新多少 看cpu计算数据以及内存的刷新方式*/
#define LV_DISP_DEF_REFR_PERIOD 10      /*[ms] 多少ms刷新一次,此处也是设置的最大帧率,1000/30 = 33帧*/

/*输入设备读取周期(毫秒)*/
#define LV_INDEV_DEF_READ_PERIOD 10     /*[ms]*/

/*使用自定义的计时源,以毫秒为单位显示已经过去的时间。
 *它消除了手动使用 `lv_tick_inc()` 更新计时器的需要。*/
#define LV_TICK_CUSTOM 1
#if LV_TICK_CUSTOM
#define LV_TICK_CUSTOM_INCLUDE "systick.h"         /*系统时间函数的头文件*/
#define LV_TICK_CUSTOM_SYS_TIME_EXPR ((uint32_t)GetSysRunTime())    /*表达式求值为当前系统时间,单位为毫秒。*/
 /*如果将lvgl用作ESP32组件*/
 // #define LV_TICK_CUSTOM_INCLUDE "esp_timer.h"
 // #define LV_TICK_CUSTOM_SYS_TIME_EXPR ((esp_timer_get_time() / 1000LL))
#endif   /*LV_TICK_CUSTOM*/

/*默认每英寸点数(DPI)。用于初始化默认大小,例如小部件大小,样式填充等。
 *这个参数并不是非常重要,但可以用来调整默认大小和间距。*/
#define LV_DPI_DEF 130     /*[px/inch]*/

 /*=======================
  *      功能配置
  *=======================*/

  /*-------------
   *    绘制
   *-----------*/

   /*启用复杂绘图引擎。
    *需要启用绘制阴影、渐变、圆角、圆形、弧线、斜线、图像变换或任何遮罩的复杂绘图引擎。*/
#define LV_DRAW_COMPLEX 1
#if LV_DRAW_COMPLEX != 0

    /*允许缓存一些阴影计算。
    *LV_SHADOW_CACHE_SIZE是缓存的最大阴影大小,其中阴影大小为`阴影宽度 + 半径`
    *缓存的RAM成本为LV_SHADOW_CACHE_SIZE的平方。*/
#define LV_SHADOW_CACHE_SIZE 0

    /* 设置最大缓存圆数据的数量。
    * 保存1/4圆的周长用于抗锯齿。
    * 每个圆使用半径*4个字节(最常用的半径被保存)。
    * 0: 禁用缓存 */
#define LV_CIRCLE_CACHE_SIZE 4
#endif /*LV_DRAW_COMPLEX*/

    /**
     * 当小部件的`style_opa < 255`时,使用"简单图层"将小部件缓冲到一个图层中,
     * 然后使用给定的不透明度将它与其他图像混合。
     * 注意,`bg_opa`,`text_opa`等不需要缓冲到图层中。
     * 该部件可以被分成较小的块进行缓冲,以避免使用大缓冲区。
     *
     * - LV_LAYER_SIMPLE_BUF_SIZE: [bytes] 是最佳的目标缓冲区大小。LVGL 会尝试分配它。
     * - LV_LAYER_SIMPLE_FALLBACK_BUF_SIZE: 如果无法分配 `LV_LAYER_SIMPLE_BUF_SIZE`,则会使用 `[bytes]` 作为目标缓冲区大小。
     *
     * 两个缓冲区大小都以字节为单位。
     * 这些设置只影响具有不透明度的小部件,因为使用 transform_angle/zoom 属性的“Transformed layers”需要使用更大的缓冲区,
     * 并且不能以块的方式绘制。
     */
#define LV_LAYER_SIMPLE_BUF_SIZE          (24 * 1024)
#define LV_LAYER_SIMPLE_FALLBACK_BUF_SIZE (3 * 1024)

     /*默认图像缓存大小。图像缓存会保持图像打开状态。
      *如果只使用内置的图像格式,则缓存并没有真正的优势。(如果没有添加新的图像解码器)
      *使用复杂的图像解码器(例如PNG或JPG)时,缓存可以节省图像的持续打开/解码。
      *然而,打开的图像可能会消耗额外的内存。
      *0: 禁用缓存*/
#define LV_IMG_CACHE_DEF_SIZE 0

      /*每个梯度允许的停靠点数。增加此值可允许更多的停靠点。
       *每增加一个停靠点,会增加 (sizeof(lv_color_t) + 1) 字节的空间。*/
#define LV_GRADIENT_MAX_STOPS 2

       /*默认渐变缓冲区大小。
        *当LVGL计算渐变“映射”时,它可以将它们保存到缓存中,以避免再次计算它们。
        *LV_GRAD_CACHE_DEF_SIZE 设置此缓存的大小(以字节为单位)。
        *如果缓存太小,则地图将在绘制时才分配。
        *0 不进行缓存*/
#define LV_GRAD_CACHE_DEF_SIZE 0

        /*允许使用抖动技术来平滑渐变色(以在有限的色深显示器上实现视觉平滑的颜色渐变)
         *LV_DITHER_GRADIENT意味着要为对象的渲染表面分配一到两行额外的空间。
         *如果使用误差扩散,内存消耗的增加量为(32位 * 对象宽度)加上(24位 * 对象宽度)。*/
#define LV_DITHER_GRADIENT 0
#if LV_DITHER_GRADIENT
         /*为误差扩散抖动添加支持。
          *误差扩散抖动可以得到更好的视觉效果,但需要更多的CPU计算和内存支持来进行绘制。
          *内存消耗的增加量为(对象宽度 * 24位)*/
#define LV_DITHER_ERROR_DIFFUSION 0
#endif

          /*最大缓冲区大小以用于旋转分配。
           *仅当显示驱动程序启用了软件旋转时才会使用。*/
#define LV_DISP_ROT_MAX_BUF (10*1024)

           /*-------------
            * GPU
            *-----------*/

            /*使用Arm的2D加速库Arm-2D。 */
#define LV_USE_GPU_ARM2D 0

/*使用STM32的DMA2D(也称为Chrom Art)GPU。*/
#define LV_USE_GPU_STM32_DMA2D 0
#if LV_USE_GPU_STM32_DMA2D
    /*必须定义目标处理器的CMSIS头文件路径,
    例如“stm32f7xx.h”或“stm32f4xx.h”。*/
#define LV_GPU_DMA2D_CMSIS_INCLUDE
#endif

    /*使能 RA6M3 G2D GPU*/
#define LV_USE_GPU_RA6M3_G2D 0
#if LV_USE_GPU_RA6M3_G2D
    /*include path of target processor
    e.g. "hal_data.h"*/
#define LV_GPU_RA6M3_G2D_INCLUDE "hal_data.h"
#endif
    /*使用SWM341的DMA2D GPU*/
#define LV_USE_GPU_SWM341_DMA2D 0
#if LV_USE_GPU_SWM341_DMA2D
#define LV_GPU_SWM341_DMA2D_INCLUDE "SWM341.h"
#endif

/*使用NXP的PXP GPU iMX RTxxx平台*/
#define LV_USE_GPU_NXP_PXP 0
#if LV_USE_GPU_NXP_PXP
    /*1: 为PXP添加默认的裸机和FreeRTOS中断处理例程(lv_gpu_nxp_pxp_osa.c),并在lv_init()期间自动调用lv_gpu_nxp_pxp_init()。
    *需要注意的是,为了使用FreeRTOS OSA,
    *必须定义符号SDK_OS_FREE_RTOS,否则将选择裸机实现。
    *0: 在 lv_init() 之前必须手动调用 lv_gpu_nxp_pxp_init()。
    */
#define LV_USE_GPU_NXP_PXP_AUTO_INIT 0
#endif

    /*使用 NXP iMX RTxxx 平台的 VG-Lite GPU。*/
#define LV_USE_GPU_NXP_VG_LITE 0

/*使用SDL渲染器API。*/
#define LV_USE_GPU_SDL 0
#if LV_USE_GPU_SDL
#define LV_GPU_SDL_INCLUDE_PATH <SDL2/SDL.h>
/*纹理缓存大小,默认为8MB。*/
#define LV_GPU_SDL_LRU_SIZE (1024 * 1024 * 8)
/*自定义蒙版绘制的混合模式,如果需要与旧版的SDL2库链接,则禁用。*/
#define LV_GPU_SDL_CUSTOM_BLEND_MODE (SDL_VERSION_ATLEAST(2, 0, 6))
#endif

/*-------------
 *    日志
 *-----------*/

 /*开启日志模块*/
#define LV_USE_LOG 1
#if LV_USE_LOG

    /*应该添加多重要的日志:
    *LV_LOG_LEVEL_TRACE       很多日志以提供详细信息
    *LV_LOG_LEVEL_INFO        记录重要事件的日志
    *LV_LOG_LEVEL_WARN        如果发生了不期望的事件,但没有造成问题,应该记录日志。
    *LV_LOG_LEVEL_ERROR       只有在系统发生错误时,才需要记录日志。
    *LV_LOG_LEVEL_USER        仅记录用户添加的日志。
    *LV_LOG_LEVEL_NONE        不要记录任何东西。*/
#define LV_LOG_LEVEL LV_LOG_LEVEL_ERROR

    /*1: 使用“printf”打印日志。;
    *0: 用户需要使用`lv_log_register_print_cb()`注册一个回调函数来打印日志。*/
#define LV_LOG_PRINTF 1

    /*启用/禁用在产生大量日志的模块中的LV_LOG_TRACE。*/
#define LV_LOG_TRACE_MEM        1
#define LV_LOG_TRACE_TIMER      1
#define LV_LOG_TRACE_INDEV      1
#define LV_LOG_TRACE_DISP_REFR  1
#define LV_LOG_TRACE_EVENT      1
#define LV_LOG_TRACE_OBJ_CREATE 1
#define LV_LOG_TRACE_LAYOUT     1
#define LV_LOG_TRACE_ANIM       1

#endif  /*LV_USE_LOG*/

/*-------------
 *    断言
 *-----------*/

 /*如果操作失败或者发现无效数据,启用断言。
  *如果启用了 LV_USE_LOG,操作失败时将打印错误消息。*/
#define LV_USE_ASSERT_NULL          1   /*检查参数是否为NULL。(非常快速,推荐使用)*/
#define LV_USE_ASSERT_MALLOC        1   /*检查内存是否成功分配。(非常快速,推荐使用)*/
#define LV_USE_ASSERT_STYLE         0   /*检查样式是否正确初始化。(非常快速,推荐使用)*/
#define LV_USE_ASSERT_MEM_INTEGRITY 0   /*在关键操作之后检查 `lv_mem` 的完整性。(慢)*/
#define LV_USE_ASSERT_OBJ           0   /*检查对象的类型和存在性(例如未被删除)。 (慢)*/

  /*添加一个自定义处理程序,当断言发生时,例如重新启动 MCU。*/
#define LV_ASSERT_HANDLER_INCLUDE <stdint.h>
#define LV_ASSERT_HANDLER while(1);   /*死循环(指在发生错误或异常时停止程序执行)。*/

/*-------------
 *    其它
 *-----------*/

 /*1: 显示CPU使用率和FPS计数。*/
#define LV_USE_PERF_MONITOR 1
#if LV_USE_PERF_MONITOR
#define LV_USE_PERF_MONITOR_POS LV_ALIGN_BOTTOM_RIGHT
#endif

/*1: 显示已用内存和内存碎片化情况。
 * 需要设置LV_MEM_CUSTOM = 0。*/
#define LV_USE_MEM_MONITOR 1
#if LV_USE_MEM_MONITOR
#define LV_USE_MEM_MONITOR_POS LV_ALIGN_BOTTOM_LEFT
#endif

 /*1: 在重绘区域上绘制随机颜色的矩形。*/
#define LV_USE_REFR_DEBUG 0

/*更改内置的(v)snprintf函数*/
#define LV_SPRINTF_CUSTOM 0
#if LV_SPRINTF_CUSTOM
#define LV_SPRINTF_INCLUDE <stdio.h>
#define lv_snprintf  snprintf
#define lv_vsnprintf vsnprintf
#else   /*LV_SPRINTF_CUSTOM*/
#define LV_SPRINTF_USE_FLOAT 0
#endif  /*LV_SPRINTF_CUSTOM*/

#define LV_USE_USER_DATA 1

/*垃圾回收器设置
 *如果lvgl绑定到更高级别的语言,并且内存由该语言管理,则使用此设置。*/
#define LV_ENABLE_GC 0
#if LV_ENABLE_GC != 0
#define LV_GC_INCLUDE "gc.h"   /*包括垃圾回收器相关事项。*/
#endif /*LV_ENABLE_GC*/

 /*=====================
  *  编译器设置
  *====================*/

  /*对于大端系统,请设置为1。*/
#define LV_BIG_ENDIAN_SYSTEM 0

/*定义一个自定义属性来描述 `lv_tick_inc` 函数*/
#define LV_ATTRIBUTE_TICK_INC

/*定义一个自定义属性来描述 `lv_timer_handler` 函数。*/
#define LV_ATTRIBUTE_TIMER_HANDLER

/*定义一个自定义属性来描述 `lv_disp_flush_ready` 函数。*/
#define LV_ATTRIBUTE_FLUSH_READY

/*缓冲区所需的对齐大小*/
#define LV_ATTRIBUTE_MEM_ALIGN_SIZE 1

/*将在需要对齐内存的地方添加(使用-Os时,默认情况下数据可能不会对齐到边界)
 * E.g. __attribute__((aligned(4)))*/
#define LV_ATTRIBUTE_MEM_ALIGN

 /*标记用于标记大常量数组的属性,例如字体位图。*/
#define LV_ATTRIBUTE_LARGE_CONST

/*编译器在RAM中声明大数组时的前缀*/
#define LV_ATTRIBUTE_LARGE_RAM_ARRAY

/*将性能关键的函数放入更快的存储器(如RAM)中。*/
#define LV_ATTRIBUTE_FAST_MEM

/*对于在GPU加速操作中使用的前缀变量,通常需要将其放置在可进行DMA访问的RAM部分中。*/
#define LV_ATTRIBUTE_DMA

/*Export integer constant to binding. This macro is used with constants in the form of LV_<CONST> that
 *将整数常量导出到绑定。这个宏用于形式为 LV_<CONST> 的常量,这些常量也应该出现在 LVGL 绑定 API 中,比如 Micropython。*/
#define LV_EXPORT_CONST_INT(int_value) struct _silence_gcc_warning /*The default value just prevents GCC warning*/

 /*通过使用 int32_t 类型代替 int16_t 类型来扩展默认的 -32k..32k 坐标范围为 -4M..4M。*/
#define LV_USE_LARGE_COORD 0

/*==================
 *    字体使用
 *===================*/

 /*使用 bpp = 4 的 Montserrat 字体包括 ASCII 范围和一些符号。
  *https://fonts.google.com/specimen/Montserrat*/
#define LV_FONT_MONTSERRAT_8  0
#define LV_FONT_MONTSERRAT_10 0
#define LV_FONT_MONTSERRAT_12 0
#define LV_FONT_MONTSERRAT_14 1
#define LV_FONT_MONTSERRAT_16 0
#define LV_FONT_MONTSERRAT_18 0
#define LV_FONT_MONTSERRAT_20 0
#define LV_FONT_MONTSERRAT_22 0
#define LV_FONT_MONTSERRAT_24 0
#define LV_FONT_MONTSERRAT_26 0
#define LV_FONT_MONTSERRAT_28 0
#define LV_FONT_MONTSERRAT_30 0
#define LV_FONT_MONTSERRAT_32 0
#define LV_FONT_MONTSERRAT_34 0
#define LV_FONT_MONTSERRAT_36 0
#define LV_FONT_MONTSERRAT_38 0
#define LV_FONT_MONTSERRAT_40 0
#define LV_FONT_MONTSERRAT_42 0
#define LV_FONT_MONTSERRAT_44 0
#define LV_FONT_MONTSERRAT_46 0
#define LV_FONT_MONTSERRAT_48 0

  /*展示特殊功能*/
#define LV_FONT_MONTSERRAT_12_SUBPX      0
#define LV_FONT_MONTSERRAT_28_COMPRESSED 0  /*bpp = 3*/
#define LV_FONT_DEJAVU_16_PERSIAN_HEBREW 0  /*展示特殊功能:将希伯来语、阿拉伯语、波斯语字母及其各种形式翻译*/
#define LV_FONT_SIMSUN_16_CJK            0  /*翻译:1000个最常见的CJK部首*/

/*像素级完美等宽字体*/
#define LV_FONT_UNSCII_8  0
#define LV_FONT_UNSCII_16 0

/*可选择在此声明自定义字体。
 *您可以将这些字体设置为默认字体,并且它们将在全局范围内可用。
 *E.g. #define LV_FONT_CUSTOM_DECLARE   LV_FONT_DECLARE(my_font_1) LV_FONT_DECLARE(my_font_2)*/
#define LV_FONT_CUSTOM_DECLARE

 /*始终设置一个默认字体*/
#define LV_FONT_DEFAULT &lv_font_montserrat_14

/*启用处理大字体或包含大量字符的字体。
 *这个限制取决于字体大小、字体类型和 bpp。
 *如果某个字体需要编译器,则会触发编译器错误。*/
#define LV_FONT_FMT_TXT_LARGE 0

 /*启用/禁用对压缩字体的支持。*/
#define LV_USE_FONT_COMPRESSED 0

/*启用亚像素渲染*/
#define LV_USE_FONT_SUBPX 0
#if LV_USE_FONT_SUBPX
    /*设置显示器的像素顺序。RGB通道的物理顺序。在使用“正常”字体时无关紧要。*/
#define LV_FONT_SUBPX_BGR 0  /*0: RGB; 1:BGR order*/
#endif

/*启用在找不到字形描述时绘制占位符*/
#define LV_USE_FONT_PLACEHOLDER 1

/*=================
 *     文本设置
 *=================*/

 /**
  * 选择字符串的字符编码。
  * 您的IDE或编辑器应该有相同的字符编码:
  * - LV_TXT_ENC_UTF8
  * - LV_TXT_ENC_ASCII
  */
#define LV_TXT_ENC LV_TXT_ENC_UTF8

  /*可以在这些字符处断行文本。*/
#define LV_TXT_BREAK_CHARS " ,.;:-_"

/*如果一个单词至少有这么长,就会在“prettiest”处断行
 *要禁用,将其设置为小于或等于0的值。*/
#define LV_TXT_LINE_BREAK_LONG_LEN 0

 /*在断行之前,在一行中放置长单词的最小字符数。
  *取决于LV_TXT_LINE_BREAK_LONG_LEN。*/
#define LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN 3

  /*在断行之后,将长单词放置在一行中所需的最小字符数。
   *取决于LV_TXT_LINE_BREAK_LONG_LEN.*/
#define LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN 3

   /*用于指示文本重新上色的控制字符。*/
#define LV_TXT_COLOR_CMD "#"

/*支持双向文本。
 *允许混合从左到右和从右到左的文本。方向将根据Unicode双向算法进行处理:
 *https://www.w3.org/International/articles/inline-bidi-markup/uba-basics*/
#define LV_USE_BIDI 0
#if LV_USE_BIDI
 /*设置默认方向。支持的值有:
 *`LV_BASE_DIR_LTR` Left-to-Right
 *`LV_BASE_DIR_RTL` Right-to-Left
 *`LV_BASE_DIR_AUTO` detect texts base direction*/
#define LV_BIDI_BASE_DIR_DEF LV_BASE_DIR_AUTO
#endif

 /*启用阿拉伯语/波斯语处理。
  *在这些语言中,字符应根据它们在文本中的位置替换为另一种形式。*/
#define LV_USE_ARABIC_PERSIAN_CHARS 0

  /*==================
   *  小部件使用
   *================*/

   /*小部件文档: https://docs.lvgl.io/latest/en/html/widgets/index.html*/

#define LV_USE_ARC        1

#define LV_USE_BAR        1

#define LV_USE_BTN        1

#define LV_USE_BTNMATRIX  1

#define LV_USE_CANVAS     1

#define LV_USE_CHECKBOX   1

#define LV_USE_DROPDOWN   1   /*Requires: lv_label*/

#define LV_USE_IMG        1   /*Requires: lv_label*/

#define LV_USE_LABEL      1
#if LV_USE_LABEL
#define LV_LABEL_TEXT_SELECTION 1 /*启用标签文本的选择。*/
#define LV_LABEL_LONG_TXT_HINT 1  /*将一些额外信息存储在标签中,以加速绘制非常长的文本。*/
#endif

#define LV_USE_LINE       1

#define LV_USE_ROLLER     1   /*Requires: lv_label*/
#if LV_USE_ROLLER
#define LV_ROLLER_INF_PAGES 7 /*当滚轴无限长时,额外的“页面”数量是多少。*/
#endif

#define LV_USE_SLIDER     1   /*Requires: lv_bar*/

#define LV_USE_SWITCH     1

#define LV_USE_TEXTAREA   1   /*Requires: lv_label*/
#if LV_USE_TEXTAREA != 0
#define LV_TEXTAREA_DEF_PWD_SHOW_TIME 1500    /*ms*/
#endif

#define LV_USE_TABLE      1

/*==================
 *     额外组件
 *==================*/

 /*-----------
  *   部件
  *----------*/
#define LV_USE_ANIMIMG    0

#define LV_USE_CALENDAR   1
#if LV_USE_CALENDAR
#define LV_CALENDAR_WEEK_STARTS_MONDAY 0
#if LV_CALENDAR_WEEK_STARTS_MONDAY
#define LV_CALENDAR_DEFAULT_DAY_NAMES {"Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"}
#else
#define LV_CALENDAR_DEFAULT_DAY_NAMES {"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"}
#endif

#define LV_CALENDAR_DEFAULT_MONTH_NAMES {"January", "February", "March",  "April", "May",  "June", "July", "August", "September", "October", "November", "December"}
#define LV_USE_CALENDAR_HEADER_ARROW 1
#define LV_USE_CALENDAR_HEADER_DROPDOWN 1
#endif  /*LV_USE_CALENDAR*/

#define LV_USE_CHART      0

#define LV_USE_COLORWHEEL 0

#define LV_USE_IMGBTN     0

#define LV_USE_KEYBOARD   0

#define LV_USE_LED        0

#define LV_USE_LIST       0

#define LV_USE_MENU       0

#define LV_USE_METER      0

#define LV_USE_MSGBOX     0

#define LV_USE_SPAN       0
#if LV_USE_SPAN
  /*A line text can contain maximum num of span descriptor */
#define LV_SPAN_SNIPPET_STACK_SIZE 64
#endif

#define LV_USE_SPINBOX    0

#define LV_USE_SPINNER    0

#define LV_USE_TABVIEW    0

#define LV_USE_TILEVIEW   0

#define LV_USE_WIN        0

/*-----------
 *   主题
 *----------*/

 /*一个简单、令人印象深刻、非常完整的主题。*/
#define LV_USE_THEME_DEFAULT 1
#if LV_USE_THEME_DEFAULT

    /*0: 亮; 1: 暗*/
#define LV_THEME_DEFAULT_DARK 0

/*1: 按下时启用增长*/
#define LV_THEME_DEFAULT_GROW 1

/*默认过渡时间(以毫秒为单位)*/
#define LV_THEME_DEFAULT_TRANSITION_TIME 80
#endif /*LV_USE_THEME_DEFAULT*/

/*一个非常简单的主题,是自定义主题的很好起点。*/
#define LV_USE_THEME_BASIC 1

/*一个专为单色显示器设计的主题。*/
#define LV_USE_THEME_MONO 1

/*-----------
 * 布局设计
 *----------*/

 /*类似于CSS中Flexbox的布局设计。*/
#define LV_USE_FLEX 1

/*一种类似于CSS中Grid网格布局的设计。*/
#define LV_USE_GRID 1

/*---------------------
 *      第三方库
 *--------------------*/

 /*常见API的文件系统接口*/

 /*API for fopen, fread, etc*/
#define LV_USE_FS_STDIO 0
#if LV_USE_FS_STDIO
#define LV_FS_STDIO_LETTER '\0'     /*设置一个大写字母作为可访问该驱动器的标识(例如,“A”)。*/
#define LV_FS_STDIO_PATH ""         /*设置工作目录。文件/目录路径将被附加到其中。*/
#define LV_FS_STDIO_CACHE_SIZE 0    /*将0设置为在lv_fs_read()中缓存这个数量的字节。*/
#endif

/*API for open, read, etc*/
#define LV_USE_FS_POSIX 0
#if LV_USE_FS_POSIX
#define LV_FS_POSIX_LETTER '\0'     /*设置一个大写字母表示驱动器的访问(例如'A')。*/
#define LV_FS_POSIX_PATH ""         /*设置工作目录。文件/目录路径将被附加到其中。*/
#define LV_FS_POSIX_CACHE_SIZE 0    /*将0设置为在lv_fs_read()中缓存这个数量的字节。*/
#endif

/*API for CreateFile, ReadFile, etc*/
#define LV_USE_FS_WIN32 0
#if LV_USE_FS_WIN32
#define LV_FS_WIN32_LETTER '\0'     /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
#define LV_FS_WIN32_PATH ""         /*Set the working directory. File/directory paths will be appended to it.*/
#define LV_FS_WIN32_CACHE_SIZE 0    /*>0 to cache this number of bytes in lv_fs_read()*/
#endif

/*API for FATFS (needs to be added separately). Uses f_open, f_read, etc*/
#define LV_USE_FS_FATFS 1
#if LV_USE_FS_FATFS
#define LV_FS_FATFS_LETTER 'C'     // 设置驱动器盘符
#define LV_FS_FATFS_CACHE_SIZE 0   //设置读缓冲区的大小，暂时先不用修改
#endif

/*API for LittleFS (library needs to be adde  d separately). Uses lfs_file_open, lfs_file_read, etc*/
#define LV_USE_FS_LITTLEFS 0
#if LV_USE_FS_LITTLEFS
#define LV_FS_LITTLEFS_LETTER '\0'     /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
#define LV_FS_LITTLEFS_CACHE_SIZE 0    /*>0 to cache this number of bytes in lv_fs_read()*/
#endif
/*PNG解码器库*/
#define LV_USE_PNG 0

/*BMP解码器库*/
#define LV_USE_BMP 0

/* JPG + 切片 JPG 解码器库
 * Split JPG是一种针对嵌入式系统进行优化的自定义格式。 */
#define LV_USE_SJPG 0

 /*GIF解码库*/
#define LV_USE_GIF 0

/*二维码库*/
#define LV_USE_QRCODE 0

/*FreeType库*/
#define LV_USE_FREETYPE 0
#if LV_USE_FREETYPE
    /*FreeType库用于缓存字符的内存使用量[字节](-1表示不缓存)。*/
#define LV_FREETYPE_CACHE_SIZE (16 * 1024)
#if LV_FREETYPE_CACHE_SIZE >= 0
    /* 1: 位图缓存使用sbit缓存,0:位图缓存使用图像缓存。 */
    /* sbit缓存:对于小位图(字体大小小于256),它比较节省内存。 */
    /* 如果字体大小大于等于256,必须配置为图像缓存。 */
#define LV_FREETYPE_SBIT_CACHE 0
/* 此缓存实例管理的打开的FT_Face/FT_Size对象的最大数量。 */
/* (0:使用系统默认) */
#define LV_FREETYPE_CACHE_FT_FACES 0
#define LV_FREETYPE_CACHE_FT_SIZES 0
#endif
#endif

/*Tiny TTF 库*/
#define LV_USE_TINY_TTF 0
#if LV_USE_TINY_TTF
    /*Load TTF data from files*/
#define LV_TINY_TTF_FILE_SUPPORT 0
#endif
/*Rlottie 库*/
#define LV_USE_RLOTTIE 0

/*FFmpeg 库用于图像解码和播放视频。
 *支持所有主要的图像格式,因此不需要启用其他图像解码器。*/
#define LV_USE_FFMPEG 0
#if LV_USE_FFMPEG
 /*将输入信息转储到标准错误输出(stderr)。*/
#define LV_FFMPEG_DUMP_FORMAT 0
#endif

/*-----------
 * 其它
 *----------*/

 /*1: 启用 API 以为对象拍摄快照*/
#define LV_USE_SNAPSHOT 0

/*1: 启用 Monkey 测试*/
#define LV_USE_MONKEY 0

/*1: 启用网格导航*/
#define LV_USE_GRIDNAV 0

/*1: 启用 lv_obj 片段*/
#define LV_USE_FRAGMENT 0

/*1: 支持在标签或段落小部件中使用图像作为字体 */
#define LV_USE_IMGFONT 0

/*1: 启用基于订阅者的发布消息系统 */
#define LV_USE_MSG 0

/*1: 启用拼音输入法*/
/*Requires: lv_keyboard*/
#define LV_USE_IME_PINYIN 0
#if LV_USE_IME_PINYIN
    /*1: 使用默认同义词库。*/
    /*如果您不使用默认的同义词库,请确保在设置同义词库后使用 `lv_ime_pinyin`。*/
#define LV_IME_PINYIN_USE_DEFAULT_DICT 1
/*设置可显示的候选面板最大数量。*/
/*这需要根据屏幕尺寸进行调整。*/
#define LV_IME_PINYIN_CAND_TEXT_NUM 6

/*使用9键输入(k9)*/
#define LV_IME_PINYIN_USE_K9_MODE      1
#if LV_IME_PINYIN_USE_K9_MODE == 1
#define LV_IME_PINYIN_K9_CAND_TEXT_NUM 3
#endif // LV_IME_PINYIN_USE_K9_MODE
#endif

/*==================
* 例程
*==================*/

/*使示例能够使用该库进行构建。*/
#define LV_BUILD_EXAMPLES 1

/*===================
 * 演示用法
 ====================*/

 /*展示一些小部件。可能需要增加`LV_MEM_SIZE`。*/
#define LV_USE_DEMO_WIDGETS 1
#if LV_USE_DEMO_WIDGETS
#define LV_DEMO_WIDGETS_SLIDESHOW 0
#endif

/*演示编码器和键盘的用法。*/
#define LV_USE_DEMO_KEYPAD_AND_ENCODER 0

/*基准测试您的系统。*/
#define LV_USE_DEMO_BENCHMARK 0
#if LV_USE_DEMO_BENCHMARK
/*使用16位色深度的RGB565A8图像,而不是ARGB8565。*/
#define LV_DEMO_BENCHMARK_RGB565A8 0
#endif

/*LVGL压力测试*/
#define LV_USE_DEMO_STRESS 0

/*音乐播放器演示*/
#define LV_USE_DEMO_MUSIC 0
#if LV_USE_DEMO_MUSIC
#define LV_DEMO_MUSIC_SQUARE    0
#define LV_DEMO_MUSIC_LANDSCAPE 0
#define LV_DEMO_MUSIC_ROUND     0
#define LV_DEMO_MUSIC_LARGE     0
#define LV_DEMO_MUSIC_AUTO_PLAY 0
#endif

/*--END OF LV_CONF_H--*/

#endif /*LV_CONF_H*/

#endif /*End of "Content enable"*/
